package com.xiaoyao.wblog.activity;

import com.xiaoyao.wblog.R;
import com.xiaoyao.wblog.activity.account.AccountActivity;
import com.xiaoyao.wblog.activity.channel.ChannelActivity;
import com.xiaoyao.wblog.activity.home.HomeActivity;
import com.xiaoyao.wblog.activity.more.MoreActivity;
import com.xiaoyao.wblog.activity.search.SearchActivity;

import android.app.TabActivity;
import android.content.Intent;
import android.graphics.Color;
import android.os.Bundle;
import android.view.KeyEvent;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.Window;
import android.view.animation.Animation;
import android.view.animation.AnimationUtils;
import android.widget.ImageView;
import android.widget.TabHost;
import android.widget.TextView;

/**
 * 主页面
 * 
 * @author ZhengXiaoChuan
 * 
 */
public class MainActivity extends TabActivity implements OnClickListener{

	public static String TAB_TAG_HOME = "home";
	public static String TAB_TAG_CHANNEL = "channel";
	public static String TAB_TAG_ACCOUNT = "account";
	public static String TAB_TAG_SEARCH = "search";
	public static String TAB_TAB_MORE = "more";
	
	public static TabHost mTabHost;
	static final int COLOR1 = Color.parseColor("#787878");
	static final int COLOR2 = Color.parseColor("#ffffff");
	ImageView mBut1, mBut2, mBut3, mBut4, mBut5;
	TextView mCateText1, mCateText2, mCateText3, mCateText4, mCateText5;
	
	Intent mHomeItent, mChannelIntent, mSearchIntent, mAccountIntent, mMoreIntent;

	int mCurTabId = R.id.channel1;
	
	// Animation
	private Animation left_in, left_out;
	private Animation right_in, right_out;
	
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		requestWindowFeature(Window.FEATURE_NO_TITLE);
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);
		prepareAnim();
		prepareIntent();
		setupIntent();
		prepareView();
		
	}
	
	/**
	 * 准备Animation实例
	 * 
	 */
	private void prepareAnim() {
		left_in = AnimationUtils.loadAnimation(this, R.anim.main_left_in);
		left_out = AnimationUtils.loadAnimation(this, R.anim.main_left_out);
		
		right_in = AnimationUtils.loadAnimation(this,  R.anim.main_right_in);
		right_out = AnimationUtils.loadAnimation(this, R.anim.main_right_out);
	}
	
	/**
	 * 准备Intent实例
	 * 
	 */
	private void prepareIntent() {
		mHomeItent = new Intent(this, HomeActivity.class);
		mChannelIntent = new Intent(this, ChannelActivity.class);
		mSearchIntent = new Intent(this, SearchActivity.class);
		mAccountIntent = new Intent(this, AccountActivity.class);
		mMoreIntent = new Intent(this, MoreActivity.class);
	}
	
	/**
	 * 为每个TabSpec设置属性和内容
	 * 
	 */
	private void setupIntent() {
		mTabHost = getTabHost();
		mTabHost.addTab(buildTabSpec(TAB_TAG_HOME, R.string.category_home, R.drawable.icon_1_n, mHomeItent));
		mTabHost.addTab(buildTabSpec(TAB_TAG_CHANNEL, R.string.category_channel, R.drawable.icon_2_n, mChannelIntent));
		mTabHost.addTab(buildTabSpec(TAB_TAG_SEARCH, R.string.category_search, R.drawable.icon_3_n, mSearchIntent));
		mTabHost.addTab(buildTabSpec(TAB_TAG_ACCOUNT, R.string.category_account, R.drawable.icon_4_n, mAccountIntent));
		mTabHost.addTab(buildTabSpec(TAB_TAB_MORE, R.string.category_more, R.drawable.icon_5_n, mMoreIntent));
	}
	
	/**
	 * 建造TabSpec实例
	 * 
	 * @param tag
	 * @param resLabel
	 * @param resIcon
	 * @param intent
	 * @return
	 */
	private TabHost.TabSpec buildTabSpec(String tag, int resLabel, int resIcon, final Intent intent) {
		return mTabHost.newTabSpec(tag)
				.setIndicator(getString(resLabel), getResources().getDrawable(resIcon))
				.setContent(intent);
	}
	
	/**
	 * 获取页面中模拟TabWidget的LinearLayout、ImageView、TextView组件
	 * 
	 */
	private void prepareView() {
		mBut1 = (ImageView) findViewById(R.id.imageView1);
		mBut2 = (ImageView) findViewById(R.id.imageView2);
		mBut3 = (ImageView) findViewById(R.id.imageView3);
		mBut4 = (ImageView) findViewById(R.id.imageView4);
		mBut5 = (ImageView) findViewById(R.id.imageView5);
		findViewById(R.id.channel1).setOnClickListener(this);
		findViewById(R.id.channel2).setOnClickListener(this);
		findViewById(R.id.channel3).setOnClickListener(this);
		findViewById(R.id.channel4).setOnClickListener(this);
		findViewById(R.id.channel5).setOnClickListener(this);
		mCateText1 = (TextView) findViewById(R.id.textView1);
		mCateText2 = (TextView) findViewById(R.id.textView2);
		mCateText3 = (TextView) findViewById(R.id.textView3);
		mCateText4 = (TextView) findViewById(R.id.textView4);
		mCateText5 = (TextView) findViewById(R.id.textView5);
	}
	
	public static void setCurrentTabByTag(String tag) {
		mTabHost.setCurrentTabByTag(tag);
	}
	
	@Override
	public boolean onKeyDown(int keyCode, KeyEvent event) {
		// 当点击回退键且重复次数为0时，就让第一个模拟TabWidget的ImageView完成单击事件
		if(keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) {
			mBut1.performClick();
			return true;
		}
		return super.onKeyDown(keyCode, event);
	}

	@Override
	public void onClick(View v) {
		// 若点击的正是当前tab，就不再向下执行
		if(mCurTabId == v.getId()) {
			return;
		}
		
		// 先将所有模拟TabWidget的ImageView和TextView的样式都设置为标准状态
		mBut1.setImageResource(R.drawable.icon_1_n);
		mBut2.setImageResource(R.drawable.icon_2_n);
		mBut3.setImageResource(R.drawable.icon_3_n);
		mBut4.setImageResource(R.drawable.icon_4_n);
		mBut5.setImageResource(R.drawable.icon_5_n);
		mCateText1.setTextColor(COLOR1);
		mCateText2.setTextColor(COLOR1);
		mCateText3.setTextColor(COLOR1);
		mCateText4.setTextColor(COLOR1);
		mCateText5.setTextColor(COLOR1);
		
		int checkedId = v.getId();
		final boolean o;
		if(mCurTabId < checkedId) {
			o = true;
		}else {
			o = false;
		}
		if(o) {
			mTabHost.getCurrentView().startAnimation(left_out);
		}else {
			mTabHost.getCurrentView().startAnimation(right_out);
		}
		
		switch (checkedId) {
		case R.id.channel1:
			mTabHost.setCurrentTabByTag(TAB_TAG_HOME);
			mBut1.setImageResource(R.drawable.icon_1_c);
			mCateText1.setTextColor(COLOR2);
			break;
		case R.id.channel2:
			mTabHost.setCurrentTabByTag(TAB_TAG_CHANNEL);
			mBut2.setImageResource(R.drawable.icon_2_c);
			mCateText2.setTextColor(COLOR2);
			break;
		case R.id.channel3:
			mTabHost.setCurrentTabByTag(TAB_TAG_SEARCH);
			mBut3.setImageResource(R.drawable.icon_3_c);
			mCateText3.setTextColor(COLOR2);
			break;
		case R.id.channel4:
			mTabHost.setCurrentTabByTag(TAB_TAG_ACCOUNT);
			mBut4.setImageResource(R.drawable.icon_4_c);
			mCateText4.setTextColor(COLOR2);
			break;
		case R.id.channel5:
			mTabHost.setCurrentTabByTag(TAB_TAB_MORE);
			mBut5.setImageResource(R.drawable.icon_5_c);
			mCateText5.setTextColor(COLOR2);
			break;
		default:
			break;
		}
		
		if(o) {
			mTabHost.getCurrentView().startAnimation(left_in);
		}else {
			mTabHost.getCurrentView().startAnimation(right_in);
		}
		
		mCurTabId = checkedId;
		
	}
	
	
}
